﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace Prototipo.Helpers
{
    #region Variables de sesion

    public static class VariablesDeSessionHelpers
    {
        public static int ID_Local_Session(this Controller controller)
        {
            if (controller.Session["Local"] == null)
            {
                throw new NoHayLocalException();
            }
            else
            {
                try
                {
                    return Convert.ToInt32(controller.Session["Local"]);
                }
                catch
                {
                    throw new DataInvalidaEnDatosDeSessionException();
                }
            }
        }

        public static int ID_Mesa_Session(this Controller controller)
        {
            if (controller.Session["Mesa"] == null)
            {
                throw new NoHayMesaException();
            }
            else
            {

                try
                {
                    return Convert.ToInt32(controller.Session["Mesa"]);
                }
                catch
                {
                    throw new DataInvalidaEnDatosDeSessionException();
                }
            }
        }
    }

    public class FaltaVariableSessionException : Exception
    {
        public FaltaVariableSessionException() : base() { }
    }

    public class NoHayLocalException : FaltaVariableSessionException
    {
        public NoHayLocalException() : base() { }

        public override string Message
        {
            get
            {
                return "La variable se sesión \"Local\" no se encuentra";
            }
        }
    }

    public class NoHayMesaException : FaltaVariableSessionException
    {
        public NoHayMesaException() : base() { }

        public override string Message
        {
            get
            {
                return "La variable se sesión \"Mesa\" no se encuentra";
            }
        }
    }

    public class DataInvalidaEnDatosDeSessionException : FaltaVariableSessionException
    {
        public DataInvalidaEnDatosDeSessionException() : base() { }

        public override string Message
        {
            get
            {
                return "Alguno de los datos se sesión son inválidos";
            }
        }
    } 

    #endregion
}